package com.ldy.gkrpc.client;

import com.ldy.gkrpc.proto.Peer;
import com.ldy.gkrpc.transport.TransportClient;

import java.util.List;

/**
 * @Description server 选择器
 * @Author songxulin
 * @Date 2020/4/13 20:56
 **/
public interface TransportSelector {
    /**
     * 初始化selector
     * @param peers 可以了连接的端点信息
     * @param count client与server建立多少个连接
     * @param clazz client实现class
     */
    void init(List<Peer> peers,int count,Class<? extends TransportClient> clazz);

    /** 
     *  选择一个transport于server做交互
     * @param  
     * @return  网络client
     * @Author songxulin
     * @date 2020/4/13 21:00 
    */ 
    TransportClient select();
    /**
     * 释放用完的client
     * @param client
     * @return
     * @Author songxulin
     * @date 2020/4/14 20:37
    */
    void release(TransportClient client);

    void close();
}
